package com.demo.java.OD1_50.OD17;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【VLAN 资源池】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145520435
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);

        // 读取VLAN资源池，按逗号分隔并处理范围
        String[] vlans = s.nextLine().split(",");

        // 读取要删除的VLAN ID
        int vlanNeed = s.nextInt();

        // 创建一个列表用于存储VLAN资源池中的所有VLAN ID
        List<Integer> myList = new ArrayList<>();

        // 遍历每个VLAN ID，如果是范围则展开
        for (String vlan : vlans) {
            String[] temp = vlan.split("-");
            if (temp.length > 1) {
                // 如果包含范围，则将范围内的所有数字添加到列表中
                for (int i = Integer.parseInt(temp[0]); i <= Integer.parseInt(temp[1]); i++) {
                    myList.add(i);
                }
            } else {
                // 单个数字VLAN ID直接添加
                myList.add(Integer.parseInt(temp[0]));
            }
        }

        // 移除列表中申请的VLAN ID
        myList.remove(Integer.valueOf(vlanNeed));

        // 对列表中的VLAN ID进行排序
        Collections.sort(myList);

        // 使用StringBuilder来构建输出字符串
        StringBuilder stringBuilder = new StringBuilder();
        int i = 0;

        // 处理排序后的VLAN ID列表，将连续的VLAN ID合并成范围
        while (i < myList.size()) {
            int firstNum = myList.get(i);
            int j = 1;

            // 检查当前VLAN ID和下一个是否是连续的
            while (j <= myList.size() - 1 - i) {
                if (myList.get(i) + j == myList.get(i + j)) {
                    j++;
                } else {
                    break;
                }
            }

            // 如果只有一个VLAN ID，直接添加
            if (j == 1) {
                stringBuilder.append(firstNum);
                stringBuilder.append(",");
                ++i;
            } else {
                // 如果是连续的VLAN ID，将其合并为一个范围
                stringBuilder.append(firstNum).append("-").append(firstNum + j - 1).append(",");
                i = i + j;
            }
        }

        // 去掉最后一个逗号，输出结果
        System.out.println(stringBuilder.toString().substring(0, stringBuilder.length() - 1));
    }
}

